﻿using System;
using System.Security.Cryptography;

namespace CryptoQrUtilities.Cryption
{
    /// <summary>
    /// Allows for different ways to provide with an RSA algorithm provider.
    /// </summary>
    public interface IRsaProvider : IEquatable<IRsaProvider>
    {
        /// <summary>
        /// When implemented, retrieves an RSA service provider specific to the implementor.
        /// </summary>
        /// <returns>RSA service provider.</returns>
        RSACryptoServiceProvider GetRsaProvider();

        /// <summary>
        /// Gets whether to use OAEP padding when encrypting/decrypting using this RSA provider.
        /// </summary>
        bool UseOaepPadding { get; }
    }
}
